Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

320
Visualizações
¿Cómo evitar este tipo de notación " | indefinido " en mecanografiado?

No es imprescindible, pero lo pregunto por curiosidad. En el tipo de objeto, podemos declarar una propiedad opcional usando el operador ?:, pero ¿hay una forma abreviada similar cuando quiero declarar el tipo de retorno de la función?

 type Type = string | number; const foo = (): Type | undefined => { ... return; };
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Solo un aviso: ? (propiedad opcional) y | undefined son ligeramente diferentes. foo?: number significa que la propiedad foo puede no existir en absoluto en las instancias del tipo. 'foo' in instance , por ejemplo, devolverá falso. foo: number | undefined , sin embargo, requiere que foo esté definido en la instancia, incluso si su valor es undefined .

No hay una abreviatura para esto (que yo sepa o pueda encontrar) , pero para evitar escribir la unión cada vez y para mejorar la semántica, puede crear un tipo para representarlo . También puede hacer versiones específicas de este tipo, lo que puede ser útil, especialmente para tipos genéricos anidados .
He visto este patrón utilizado en varios proyectos del mundo real ( VueUse , por ejemplo).

 type Maybe<T> = T | undefined type MaybeNumber = Maybe<number> type MaybeArray<T> = Maybe<T[]> type ArrayOfMaybe<T> = Maybe<T>[] // Example use with variables: let maybe: Maybe<string> = "Hello, world" // or `undefined` let maybeNumber: MaybeNumber = 42 // or `undefined` let maybeNumberArray: MaybeArray<number> = [1, 2, 3, 4] // or `undefined` let arrayOfMaybeStrings: ArrayOfMaybe<string> = ["abc", undefined, "foo"]

Por lo general, lo más sencillo es usar el tipo Maybe directamente. Los únicos casos en los que es realmente beneficioso crear un nuevo tipo basado en él es si se usa ampliamente y/o es más complejo (por ejemplo, uniones y demás).

Divagaciones y pensamientos
La semántica de una abreviatura como ?: en realidad sería buena para las firmas de devolución de funciones, ya que podría diferenciar semánticamente entre "esta función podría devolver un valor undefined , y esto es significativo" ( f(): T | undefined ) y "esto la función podría no devolver un valor significativo" ( f()?: T ). Por supuesto, el hecho de que la función devuelva undefined en lugar de un valor de tipo T debe significar algo , pero el valor undefined en sí mismo no es el punto en ese caso, es que no se devolvió ningún otro valor.

about 4 years ago · Santiago Trujillo Relatório

0

No volver indefinido también es una opción. Puede devolver el valor predeterminado.

 const foo = (): Type => { let result: type = defaultValue; ... return result || defaultValue; };
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda